﻿#define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

//首先输入要输入的整数个数n，然后输入n个整数。输出为n个整数中负数的个数，和所有正整数的平均值，结果保留一位小数。
//0即不是正整数，也不是负数，不计入计算。如果没有正数，则平均值为0

//输入描述：
//首先输入一个正整数n，
//然后输入n个整数。
//输出描述：
//输出负数的个数，和所有正整数的平均值


//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	int  count = 0, count2 = 0;
//	double ret = 0, sum = 0;
//	for (int i = 0; i < n; i++)
//	{
//		scanf("%lf", &ret);
//		if (ret < 0)
//		{
//			count++;
//		}
//		else if (ret == 0)
//		{
//			;
//		}
//		else
//		{
//			sum += ret;
//			count2++;
//		}
//	}
//	if (count2 != 0)
//	{
//		double num = sum / (double)count2;
//		printf("%d %.1f", count, num);
//	}
//	else
//	{
//		printf("%d 0.0", count);
//	}
//}

//有一个长度为 n 的非降序数组，比如[1, 2, 3, 4, 5]，将它进行旋转，即把一个数组最开始的若干个元素搬到数组的末尾，变成一个旋转数组，
//比如变成了[3, 4, 5, 1, 2]，或者[4, 5, 1, 2, 3]这样的。请问，给定这样一个旋转数组，求数组中的最小值


//题目意思是将原本的数组划分为了两个子数组，后一个数组肯定小于前一个数组，这两个数组的分界线就是最小值
//尝试用二分查找

//画图分析，尤其是特殊例子：1 1 1 0 1，可以看成01111的旋转数组

//int minNumberInRotateArray(int* nums, int numsLen)
//{
//	int left = 0;
//	int right = numsLen - 1;
//	while (left < right)
//	{
//		int mid = (left + right) / 2;
//		if (nums[right] < nums[mid])//说明最小数在中间数的后面,且此时nums[mid]不可能为最小数
//		{
//			left = mid + 1;//所以left可以写成mid+1
//		}
//		else if (nums[mid] < nums[right])//最小数在中间数的前面，最小数有可能为nums[mid]
//		{
//			right = mid;//所以不能写成mid-1,因为mid此时还在判断范围内
//		}
//		else//说明nums[mid]=nums[right]
//		{
//			//那我此时减小范围，right--，直到下一次的right不与mid相等为止
//			right--;
//		}
//	}
//	//出循环，此时left应该等于right等于mid
//	return nums[left];
//}


